package cn.arikeky.exception;

import cn.arikeky.result.JsonResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


@RestControllerAdvice
public class GlobalExceptionHandler{

    // 系统异常处理器
    @ExceptionHandler(Exception.class)
    public JsonResult exceptionHandler(Exception e){
        e.printStackTrace();
        return JsonResult.error(e.getMessage(),"-1");
    }

    // 自定义异常处理
    @ExceptionHandler(GlobalException.class)
    public JsonResult GlobalExceptionHandler(GlobalException e){
        return JsonResult.error(e.getMessage(),e.getCode());
    }

    // 参数判断异常处理
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public JsonResult MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e){
        e.printStackTrace();
        // 获取到当前异常的所有数据  e.getBindingResult().getAllErrors().get(1).getDefaultMessage()
        StringBuilder stringBuilder = new StringBuilder();
        e.getBindingResult().getAllErrors().forEach(error ->{
            stringBuilder.append(error.getDefaultMessage()).append(";");
        });
        return JsonResult.error(stringBuilder.toString(),GlobalExceptionEnum.COMMON_PARAM_JRS303_ERROR.getCode());
    }

}
